public interface TTT_Engine{
	// ******************************************************************************
	// 1) Move convention:
	// 	the code for a move (x,y) in int with
	// 	x*100 + y
	
	// 2) Engine "how is the work flow" example:
	//  getEngineName();
	//  getEngineVersion();
	//  resetEngine();			
	//  setDimension(15); 		-> board with 15x15 is initialized to 0
	//	setTargetLine(4);		-> the targetLine is set to 4
	//	makeMove(1)				-> X is to move in the current position
	
	// 3) Optional features for the future:
	//  setBoardPosition(board, colorToMove, targetLine); 
	//							-> to test the engine we can set the board explicit
	//	makeMove(int colorToMove, int timeInMilliseconds);
	// 	makeMove(int colorToTime, int depth);
	// ******************************************************************************	
	
	// engine name
	public String getEngineName();
	
	// engine version
	public String getEngineVersion();
	
	// resets the current engine parameters
	public boolean resetEngine(int dimension);
	
	// sets the dimension
	// convention: 
	//	maximal dimension is 50
	public boolean setDimension(int dimension);

	// sets the targetline
	// convention: 
	//	maximal target is dimension
	public boolean setTargetLine(int targetLine);

	// set position
	// convention: 
	// 	colorToMove =  1 -> X to move
	// 	colorToMove = -1 -> O to move
	public boolean setBoardPosition(int[][] board, int colorToMove, int targetLine);	
		
	// make move
	// convention: 
	// 	colorToMove =  1 -> X to move
	// 	colorToMove = -1 -> O to move
	public int makeMove(int colorToMove);
	
	public int makeMove(int[][] board, int colorToMove, int timeInMilliseconds, int depth);

	// you got timeInMilliseconds time to find the best move
	public int makeMove(int colorToMove, int timeInMilliseconds);	
	
	// depth to search for the best move
	public int makeMove(int colorToTime, int timeInMilliseconds, int depth);
}
